package com.bdq.user.application.service;

import com.bdq.common.entity.common.PageResult;
import com.bdq.common.feign.content.vo.ContentListVO;
import com.bdq.user.application.model.dto.*;
import com.bdq.user.application.model.query.ListFollowUserQry;
import com.bdq.user.application.model.query.UserContentPageQry;
import com.bdq.user.application.model.query.UserGetQry;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author malei
 * @date 2024-05-03 17:17
 */
@Service
public interface UserAppQueryService {

    /**
     * 用户详情
     *
     * @return
     */
    UserAppDTO userDetail();

    /**
     * 用户查询
     *
     * @param userId
     * @return
     */
    UserQueryAppDTO userQuery(Long userId);

    /**
     * 获取浏览区域级别
     *
     * @return
     */
    List<ViewRegionLevelDTO> getViewRegionLevel();

    /**
     * 获取用户
     *
     * @param qry
     * @return
     */
    UserGetAppDTO getUser(UserGetQry qry);

    /**
     * 列表查询用户
     *
     * @param userIds
     * @return
     */
    List<UserListAppDTO> listUser(List<Long> userIds);

    /**
     * 用户内容分页查询
     *
     * @param qry
     * @return
     */
    PageResult<ContentListVO> contentPage(UserContentPageQry qry);

    /**
     * @param followerUserId
     * @param followedUserIds
     * @return
     */
    List<UserFollowAppDTO> listUserFollow(Long followerUserId, List<Long> followedUserIds);

    /**
     * 关注
     *
     * @param userId
     * @return
     */
    Boolean follow(Long userId);

    /**
     * 取消关注
     *
     * @param userId
     * @return
     */
    Boolean cancelFollow(Long userId);

    /**
     * @param qry
     * @return
     */
    PageResult<UserSimpleAppDTO> listFollow(ListFollowUserQry qry);
}
